#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

#include "utiles.h"
#include  "Morph.h"

#include <Magick++.h>
#include <iostream>
using namespace std;
using namespace Magick;

void uso() {
	fprintf(
			stderr,
			"Uso: imagen_entradaA imagen_entradaB imagen_salida.tif lista1.txt lista2.txt num_imagenes  \n");
	exit(1);
}

int main(int argc, char **argv) {

	//verifica que la cantidad de argumentos es correcta
	if (argc < 7)
		uso();

	argv++;
	char * imageAFilename = *argv++;
	char * imageBFilename = *argv++;
	char * list1Filename = *argv++;
	char * list2Filename = *argv++;
	char * OutImageFilename = *argv++;
	int num_images = atoi(*argv++);

	//lee la lista de coordenadas de los segmentos desde los dos archivos
	Segments segmentsImA;
	Segments segmentsImB;

	readSegmentsFromFile(list1Filename, segmentsImA);
	readSegmentsFromFile(list2Filename, segmentsImB);

	//comprobamos que hay el mismo numerde segmentos para A que para B
	if (segmentsImA.size() != segmentsImB.size()) {
		fprintf(stderr,
				"El numero de segmentos no es igual en las dos imagenes");
		exit(0);
	}

	//Declare imagenRGB variables
	ImagenRGB imageA;
	ImagenRGB imageB;

	//Read the iamges from a file
	imageA.readImageFile(imageAFilename);
	imageB.readImageFile(imageBFilename);
	//imageB.writeImageFile(OutImageFilename);

	//Start algorythm
	Morph algorythm;
	algorythm.initialitze(imageA, imageB, segmentsImA, segmentsImB);
	algorythm.generateMorph(num_images, OutImageFilename);

	return 0;

}

